package com.application.model.elegircolegio;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.imageio.ImageIO;

import org.apache.commons.lang.StringEscapeUtils;

import com.application.model.RetrivierWeb;
import com.application.model.elegircolegio.entries.ElegirColegioEntity;
import com.application.model.exceptions.WriteEntityException;
import com.application.model.xml.ConfigurationManager;

/**
 * Captura la informacion de la pagina:
 * http://www.elegircolegio.com/
 * @author jhonny
 */
public class RetrieveColegioElegirColegio extends RetrivierWeb {


    private String 					currentZona;
    private String 					currentPagina;
    private ManagerBusqueda			managerBusqueda;
    private ManagerElegirColegioEntity		informacion;
	
    public RetrieveColegioElegirColegio() {
    	informacion = new ManagerElegirColegioEntity();
    	managerBusqueda = new ManagerBusqueda(informacion);
    	
    }

    @Override
    public void retrieve() {
        Map<KeyPagina,List<String>> paginas = null;
        String url = "http://www.elegircolegio.com/colegios/ar";
        paginas = generarPaginas();
        
        for (KeyPagina zona : paginas.keySet()) {
            currentZona = zona.getKey();
            for (String pagina : paginas.get(zona)) {
                currentPagina = pagina;
                managerBusqueda.retrivie(url+"/"+zona+"/"+pagina+"/",zona.getZonaKey(),zona.getRegexInicial(),zona.getRegexFinal(),"utf-8");
            }
        }
        informacion.save();
        
    }
    
    @Override
    public void processContent(String data, String parentName) {
    }
    
    

    private Map<KeyPagina,List<String>> generarPaginas() {
    	Map<KeyPagina,List<String>> 	paginas = null;
    	List<String>				list = null;
    	String 						Urlprivado= "lista/cat/";
    	String 						Urlpublico= "lista-publicos/cat/";
    	String 						UrlCapital= "lista-capital/cat/";
    	
    	String 		regexPrivadoInicial = "<head>";
    	String 		regexPrivadoFinal = "Para contratar nuestro servicio de asesoramiento";
    	String 		regexCapitalInicial = null;
    	String 		regexCapitalFinal = null;
    	String 		regexPublicoInicial = null;
    	String 		regexPublicoFinal = null;
    	
//      http://www.elegircolegio.com/colegios/ar/lista/cat/escobar/
//      http://www.elegircolegio.com/colegios/ar/lista-publicos/cat/pilar/
//    	http://www.elegircolegio.com/colegios/ar/lista-capital/cat/belgrano/

    	paginas = new HashMap<KeyPagina, List<String>>();
    	
    	//Buenos Aires Privado
//    	generarPaginaItem(paginas,Urlprivado+"escobar","privado",regexPrivadoInicial,regexPrivadoFinal,"P",2,15);
//    	generarPaginaItem(paginas,Urlprivado+"pilar","privado",regexPrivadoInicial,regexPrivadoFinal,"P",2,15);
//    	generarPaginaItem(paginas,Urlprivado+"san-fernando","privado",regexPrivadoInicial,regexPrivadoFinal,"P",2,15);
//    	generarPaginaItem(paginas,Urlprivado+"san-isidro","privado",regexPrivadoInicial,regexPrivadoFinal,"P",6,15);
//    	generarPaginaItem(paginas,Urlprivado+"tigre","privado",regexPrivadoInicial,regexPrivadoFinal,"P",4,15);
//    	generarPaginaItem(paginas,Urlprivado+"vicente-lopez","privado",regexPrivadoInicial,regexPrivadoFinal,"P",5,15);
    	
    	generarPaginaItem(paginas,UrlCapital+"belgrano","Capital Federal",regexCapitalInicial,regexCapitalFinal,"P",2,15);
    	generarPaginaItem(paginas,UrlCapital+"nunez","Capital Federal",regexCapitalInicial,regexCapitalFinal,"P",1,15);
    	generarPaginaItem(paginas,UrlCapital+"villa-urquiza","Capital Federal",regexCapitalInicial,regexCapitalFinal,"P",1,15);
    	generarPaginaItem(paginas,UrlCapital+"chacarita","Capital Federal",regexCapitalInicial,regexCapitalFinal,"P",1,15);
    	
//    	generarPaginaItem(paginas,Urlpublico+"san-fernando","publico",regexPublicoInicial,regexPublicoFinal,"P",2,30);
//    	generarPaginaItem(paginas,Urlpublico+"san-isidro","publico",regexPublicoInicial,regexPublicoFinal,"P",3,30);
//    	generarPaginaItem(paginas,Urlpublico+"tigre","publico",regexPublicoInicial,regexPublicoFinal,"P",2,30);
//    	generarPaginaItem(paginas,Urlpublico+"vicente-lopez","publico",regexPublicoInicial,regexPublicoFinal,"P",3,30);
//    	generarPaginaItem(paginas,Urlpublico+"pilar","publico",regexPublicoInicial,regexPublicoFinal,"P",0,30);
        return paginas;
    }
    
   	private void generarPaginaItem(Map<KeyPagina, List<String>> paginas,String key,String zonaKey,String regexInicial,String regexFinal,String prefijo,Integer tamanioLista,Integer saltos) {
		List<String> list = new LinkedList<String>();
		KeyPagina keyPagina = new KeyPagina();
		keyPagina.setKey(key);
		keyPagina.setZonaKey(zonaKey);
		keyPagina.setRegexInicial(regexInicial);
		keyPagina.setRegexFinal(regexFinal);
        paginas.put(keyPagina, list);        
        for (int i = 0; i < tamanioLista; i++) {
        	list.add(prefijo+(i*saltos));			
		}
	}

 }
